home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / c / AmiVoGL_MDEV.lha / examples / fobjvws.F < prev    next >
Text File  |  1991-06-03  |  3KB  |  200 lines

  1. c
  2. c Demonstrate just how much you can put in an object
  3. c
  4.     program fobjviews
  5.     
  6. #ifdef SGI
  7. #include "fgl.h"
  8. #include "fdevice.h"
  9. #else
  10. #include "fvogl.h"
  11. #include "fvodevice.h"
  12. #endif
  13.  
  14.     integer *2 val, vminx, vmaxx, vminy, vmaxy
  15.  
  16.     integer CUBE, TOPLEFT, TOPRIGHT, BOTTOMLEFT, BOTTOMRIGHT
  17.     parameter(CUBE = 1, TOPLEFT = 2, TOPRIGHT = 3,
  18.      +            BOTTOMLEFT = 4, BOTTOMRIGHT = 5)
  19.  
  20.     call winope('fobjvws', 7)
  21.  
  22.     call getvie(vminx, vmaxx, vminy, vmaxy)
  23.  
  24.     minx = vminx
  25.     maxx = vmaxx
  26.     miny = vminy
  27.     maxy = vmaxy
  28.  
  29.     call unqdev(INPUTC)
  30.     call qdevic(SPACEK)
  31.     call pushvi
  32.  
  33.     call hfont('futura.m', 8)
  34.     call htexts(0.5, 0.9)
  35.  
  36.     call color(BLACK)
  37.     call clear
  38.  
  39. c
  40. c make an object that represents the cube
  41. c
  42.     call makecu
  43.  
  44. c
  45. c set up an object which draws in the top left of the screen.
  46. c
  47.     call makeob(TOPLEFT)
  48.         call viewpo(minx, (maxx - minx) / 2,
  49.      +                     (maxy - miny) / 2, maxy)
  50.  
  51.         call ortho2(-5.0, 5.0, -5.0, 5.0)
  52.  
  53.         call color(RED)
  54.  
  55.         call rect(-5.0, -5.0, 5.0, 5.0)
  56.  
  57.         call perspe(400, 1.0, 0.1, 1000.0)
  58.         call lookat(5.0, 8.0, 5.0, 0.0, 0.0, 0.0, 0)
  59. c
  60. c          Call an object within another object
  61. c
  62.         call callob(CUBE)
  63.  
  64.         call color(GREEN)
  65.  
  66.         call move2(-4.5, -4.5)
  67.         call hchars('perspective/lookat', 18)
  68.     call closeo
  69.  
  70. c
  71. c now set up one which draws in the top right of the screen
  72. c
  73.     call makeob(TOPRIGHT)
  74.         call viewpo((maxx - minx) / 2, maxx,
  75.      +                      (maxy - miny) / 2, maxy)
  76.         call ortho2(-5.0, 5.0, -5.0, 5.0)
  77.  
  78.         call color(GREEN)
  79.  
  80.         call rect(-5.0, -5.0, 5.0, 5.0)
  81.  
  82.         call window(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0)
  83.         call lookat(5.0, 8.0, 5.0, 0.0, 0.0, 0.0, 0)
  84.  
  85.         call callob(CUBE)
  86.  
  87.         call color(RED)
  88.  
  89.         call move2(-4.5, -4.5)
  90.         call hchars('window/lookat', 13)
  91.     call closeo
  92.  
  93. c
  94. c try the bottom left
  95. c
  96.     call makeob(BOTTOMLEFT)
  97.         call viewpo(minx, (maxx - minx) / 2,
  98.      +                      miny, (maxy - miny) / 2)
  99.  
  100.         call ortho2(-5.0, 5.0, -5.0, 5.0)
  101.  
  102.         call color(MAGENT)
  103.  
  104.         call rect(-5.0, -5.0, 5.0, 5.0)
  105.  
  106.         call perspe(400, 1.0, 0.1, 1000.0)
  107.         call polarv(15.0, 300, 300, 300)
  108.  
  109.         call callob(CUBE)
  110.  
  111.         call color(YELLOW)
  112.  
  113.         call move2(-4.5, -4.5)
  114.         call hchars('perspective/polarview', 21)
  115.     call closeo
  116.  
  117. c
  118. c and the bottom right
  119. c
  120.     call makeob(BOTTOMRIGHT)
  121.         call viewpo((maxx - minx) / 2, maxx,
  122.      +                      miny, (maxy - miny) / 2)
  123.         call ortho2(-5.0, 5.0, -5.0, 5.0)
  124.  
  125.         call color(CYAN)
  126.  
  127.         call rect(-5.0, -5.0, 5.0, 5.0)
  128.  
  129.         call window(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0)
  130.         call polarv(8.0, -180, -30, 180)
  131.  
  132.         call callob(CUBE)
  133.  
  134.         call color(BLUE)
  135.  
  136.         call move2(-4.5, -4.5)
  137.         call hchars('window/polarview', 16)
  138.     call closeo
  139.  
  140. c
  141. c now draw them
  142. c
  143.     call callob(TOPLEFT)
  144.     call callob(TOPRIGHT)
  145.     call callob(BOTTOMLEFT)
  146.     call callob(BOTTOMRIGHT)
  147.  
  148.     idum = qread(val)
  149.  
  150.     call gexit
  151.  
  152.     end
  153.  
  154. c
  155. c makecube
  156. c
  157. c set up a cube
  158. c
  159.     subroutine makecu
  160.     integer CUBE
  161.     parameter (CUBE = 1)
  162.  
  163.     call makeob(CUBE)
  164.  
  165. c
  166. c The border around the cube
  167. c
  168.         call rect(-5.0, -5.0, 10.0, 10.0)
  169.  
  170. c
  171. c Make the cube from 4 squares
  172. c
  173.         call pushma
  174.         call side
  175.         call rotate(900, 'x')
  176.         call side
  177.         call rotate(900, 'x')
  178.         call side
  179.         call rotate(900, 'x')
  180.         call side
  181.         call popmat
  182.  
  183.     call closeo
  184.  
  185.     end
  186.  
  187. c
  188. c side
  189. c
  190. c define a face for the cube
  191. c
  192.     subroutine side
  193.  
  194.     call pushma
  195.         call transl(0.0, 0.0, 1.0)
  196.         call rect(-1.0, -1.0, 1.0, 1.0)
  197.     call popmat
  198.  
  199.     end
  200.